package com.bub.pay.core.manager.user;

import com.bub.pay.core.base.IBaseManager;
import com.bub.pay.core.entity.domain.SysUser;
import com.bub.pay.core.entity.vo.user.*;

import java.util.Set;

public interface UserManager extends IBaseManager<SysUser> {

    int addUser(AddSysUserVo vo);

    /**
     * 查询用户
     *
     * @param extendId 扩展ID
     * @param userType 用户类型
     * @param isSys 是否是主账号
     * @return 用户
     */
    SysUser queryUser(Long extendId, int userType, int isSys);

    /**
     * 重置密码
     *
     * @param id 用户ID
     * @return 新密码
     */
    String restPassword(Long id);

    /**
     * 重置谷歌验证码相关
     *
     * @param id 用户ID
     * @return 更新行数
     */
    int restGoogleSecret(Long id);

    /**
     * 根据用户名查找权限列表
     * @param userName
     * @return
     */
    Set getAccessByUserName(String userName);

    int updateUser(UpdateSysUserVo upUserVo);
    /**
     * 重置支付密码
     * @param id 用户ID
     */
    void restPayPassword(Long id);

	/**
	 * 修改支付密码
	 * @param updateUserPayPasswordVo 参数
	 */
	void updatePayPassword(UpdateUserPayPasswordVo updateUserPayPasswordVo);

	/**
	 * 修改密码
	 * @param updateUserPasswordVo 参数
	 */
	void updatePassword(UpdateUserPasswordVo updateUserPasswordVo);

	/**
	 * 重置谷歌密钥
	 * @param resetUserGoogleSecretVo 参数
	 */
	void resetGoogleSecret(ResetUserGoogleSecretVo resetUserGoogleSecretVo);

	/**
	 * 注销用户
	 * @param logoutUserVo 参数
	 */
	void logoutUser(LogoutUserVo logoutUserVo);

	/**
	 * 查询用户的扩展ID
	 * @param id 用户ID
	 * @param cache 是否走缓存
	 * @return 扩展ID
	 */
	Long queryUserExtendId(Long id, boolean cache);


	/**
	 * 逻辑删除用户
	 * @param updateSysUserVo 更新
	 * @return 删除条数
	 */
	int deleteUser(UpdateSysUserVo updateSysUserVo);

	/**
	 * 重置密码/谷歌验证码
	 * @param resetPwdOrCodeVo 重置
	 * @return  更新条数
	 */
    int resetPwdOrCode(ResetPwdOrCodeVo resetPwdOrCodeVo);
}
